#include <iostream>
#include "Thread.hpp"
#include <unistd.h>
#include <vector>
using namespace ThreadMoudle;

const int N = 4;

class threadData
{
public:
    int max;
    int start;
};

void Count(threadData td)
{
    for (int i = td.start; i < td.max; i++)
    {
        std::cout << "i == " << i << std::endl;
        sleep(1);
    }
}




int main()
{
    std::vector<Thread<threadData>> threads;
    for(int i= 1; i<= N; ++i)
    {
        threads.emplace_back(Thread<threadData>(Count,{5,1}));
    }
    for(auto& t : threads)
    t.Start();

    // v[3].Detach();

    sleep(5);
    
    for(auto& t : threads)
    {
        std::cout<<"join="<<t.Join()<<std::endl;
    }

    return 0;
}



// void Hello()
// {
//     int n = 7;
//     while (n--)
//     {
//         std::cout << "hello world" << std::endl;
//         sleep(1);
//     }
// }

// int main()
// {
//     std::vector<Thread> v;
//     for(int i= 1; i<= N; ++i)
//     {
//         v.emplace_back(Thread(Hello));
//     }
//     for(auto& t : v)
//     t.Start();

//     // v[3].Detach();

//     sleep(5);
    
//     for(auto& t : v)
//     {
//         std::cout<<"join="<<t.Join()<<std::endl;
//     }

//     return 0;
// }